Relationships come from this google sheet
source(here::here("code", "update-dag.R"))
dag <- read_csv(here::here("data", "dag.csv"))
dag %>% select(-paper) %>% kablebox()| concept | from | edge | to | cites | cites_empirical |
|---|---|---|---|---|---|
| experience | office organization | increases | capacity | NA | NA |
| experience | professional networks | increases | capacity | NA | NA |
| power | capacity | increases | level of constituency service | NA | NA |
| experience | experience in office | increases | office organization | NA | NA |
| experience | experience in office | increases | professional networks | NA | NA |
| experience | experience in office | increases | policy expertise | NA | NA |
| demand | experience in office | increases | name recognition | NA | NA |
| demand | capacity | increases | advertising services | NA | NA |
| demand | advertising services | increases | demand | NA | NA |
| power | bureaucratic responsiveness | increases | marginal benefit of service work | NA | NA |
| power | marginal benefit of service work | increases | directing resources to service | NA | NA |
| power | directing resources to service | increases | capacity | NA | NA |
| experience | policy expertise | increases | priority for policy work | NA | NA |
| power | institutional position | increases | bureaucratic responsiveness | NA | NA |
| power | institutional position | increases | power over policy | NA | NA |
| power | power over policy | increases | marginal benefit of policy work | NA | NA |
| power | marginal benefit of policy work | increases | priority for policy work | NA | NA |
| power | institutional position | increases | staff | NA | NA |
| power | staff | increases | capacity | NA | NA |
| power | priority for policy work | increases | ratio of policy to service | NA | NA |
| demand | power over policy | increases | media coverage | NA | NA |
| demand | media coverage | increases | name recognition | NA | NA |
| demand | name recognition | increases | demand | NA | NA |
| demand | demand | increases | level of constituency service | NA | NA |
| demand | advertising services | increases | name recognition | NA | NA |
library(netlit)
set.seed(13)
# plot tidy network data
plot_netework <- function(dag){
d <- review(dag,
edge_attributes = names(dag) )
n <- ggnetwork(d$graph)
n$name %<>% str_replace_all("([a-z| ]{8}) ",
"\\1\n") %>% str_to_title()
ggplot(n) +
aes(x = x, y = y, xend = xend, yend = yend,
label = name ) +
geom_nodes(size = 15, alpha = .1) +
geom_edges(aes(#linetype = concept,
color = concept),
curvature = 0.1,
alpha = .8,
#box.padding = unit(1, "lines"),
arrow = arrow(length = unit(6, "pt"), type = "closed")) +
geom_nodetext_repel(size = 2.5) +
theme_blank() +
labs(color = "",
linetype = "") +
scale_color_viridis_d(option = "plasma", begin = 0, end = .9, direction = -1) +
theme(legend.position="bottom")
}
plot_netework(dag)drop_node <- function(data, NODE_TO_DROP){
simple <- data %>% mutate(
from = case_when(
from == NODE_TO_DROP ~ dag$from[which(dag$to == NODE_TO_DROP)],
T ~ from
),
to = case_when(
to == NODE_TO_DROP ~ dag$from[which(dag$to == NODE_TO_DROP)],
T ~ to
)
)
return(simple)
}
simple <- drop_node(dag, "directing resources to service") %>%
drop_node(NODE_TO_DROP = "marginal benefit of policy work") %>%
drop_node("bureaucratic responsiveness") %>%
drop_node("media coverage") %>%
drop_node("policy expertise")
set.seed(7)
# plot_netework(simple)
# now dropping core mechanisms that don't confound
simpler <- drop_node(simple, "office organization") %>%
drop_node("professional networks") %>%
drop_node("marginal benefit of service work") %>%
drop_node("ratio of policy to service") %>%
drop_node("bureaucratic responsiveness") %>%
drop_node("staff")
set.seed(2)
plot_netework(simpler)simpler %>%
filter(!str_detect(to, "advert|name"),
!str_detect(from, "advert|name") ) %>%
# drop_node("power") %>%
plot_netework()simpler %>%
filter(!str_detect(to, "demand|advert|name"),
!str_detect(from, "demand|advert|name") ) %>%
plot_netework()priority_vars <- "priority|ratio|policy "
level_only <- . %>%
filter(! str_detect(to, priority_vars))
set.seed(30)
dag %>%
level_only() %>%
drop_node("power over policy") %>%
plot_netework()# simple %>%
# level_only() %>%
# drop_node("power over policy") %>%
# plot_netework()
#set.seed(49)
set.seed(55)
simpler %>%
level_only() %>%
drop_node("power over policy") %>%
plot_netework()level_vars <- "level|responsiveness|service |resources to service|capacity|demand|advertising|professional|name|organization|media|staff"
priority_only <- . %>%
filter(! str_detect(to, level_vars))
dag %>%
priority_only() %>%
#drop_node("power over policy") %>%
plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)# simple %>%
# priority_only() %>%
# #drop_node("power over policy") %>%
# plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)
simpler %>%
priority_only() %>%
#drop_node("power over policy") %>%
plot_netework()+ scale_color_viridis_d(option = "plasma", begin = 0, end = .5, direction = -1)